#include "gtkroot.h"
#include "gtktextview.h"
#include "gtkwindow.h"
+#include "gtkstack.h"
#include <gio/gio.h>
g_variant_get (parameters, "(i)", &idx);
GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
- GtkWidget *widget = GTK_WIDGET (accessible);
-
- real_idx = 0;
- for (child = gtk_widget_get_first_child (widget);
- child;
- child = gtk_widget_get_next_sibling (child))
+ if (GTK_IS_WIDGET (accessible))
{
- if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
- continue;
+ GtkWidget *widget = GTK_WIDGET (accessible);
+
+ real_idx = 0;
+ for (child = gtk_widget_get_first_child (widget);
+ child;
+ child = gtk_widget_get_next_sibling (child))
+ {
+ if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
+ continue;
- if (real_idx == idx)
- break;
+ if (real_idx == idx)
+ break;
- real_idx += 1;
+ real_idx += 1;
+ }
+ }
+ else if (GTK_IS_STACK_PAGE (accessible))
+ {
+ if (idx == 0)
+ {
+ child = gtk_stack_page_get_child (GTK_STACK_PAGE (accessible));
+ if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
+ child = NULL;
+ }
}
if (child == NULL)
GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE ("a(so)"));
GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
- GtkWidget *widget = GTK_WIDGET (accessible);
- GtkWidget *child;
-
- for (child = gtk_widget_get_first_child (widget);
- child;
- child = gtk_widget_get_next_sibling (child))
+ if (GTK_IS_WIDGET (accessible))
{
- if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
- continue;
+ GtkWidget *widget = GTK_WIDGET (accessible);
+ GtkWidget *child;
- GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (child));
+ for (child = gtk_widget_get_first_child (widget);
+ child;
+ child = gtk_widget_get_next_sibling (child))
+ {
+ if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
+ continue;
- const char *name = g_dbus_connection_get_unique_name (self->connection);
- const char *path = gtk_at_spi_context_get_context_path (GTK_AT_SPI_CONTEXT (context));
+ GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (child));
- g_variant_builder_add (&builder, "(so)", name, path);
+ const char *name = g_dbus_connection_get_unique_name (self->connection);
+ const char *path = gtk_at_spi_context_get_context_path (GTK_AT_SPI_CONTEXT (context));
+
+ g_variant_builder_add (&builder, "(so)", name, path);
+ }
+ }
+ else if (GTK_IS_STACK_PAGE (accessible))
+ {
+ GtkWidget *child = gtk_stack_page_get_child (GTK_STACK_PAGE (accessible));
+
+ if (gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
+ {
+ GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (child));
+ const char *name = g_dbus_connection_get_unique_name (self->connection);
+ const char *path = gtk_at_spi_context_get_context_path (GTK_AT_SPI_CONTEXT (context));
+ g_variant_builder_add (&builder, "(so)", name, path);
+ }
}
g_dbus_method_invocation_return_value (invocation, g_variant_new ("(a(so))", &builder));
if (GTK_IS_ROOT (accessible))
idx = get_index_in_toplevels (GTK_WIDGET (accessible));
+ else if (GTK_IS_STACK_PAGE (accessible))
+ idx = get_index_in_parent (gtk_stack_page_get_child (GTK_STACK_PAGE (accessible)));
+ else if (GTK_IS_STACK (gtk_widget_get_parent (GTK_WIDGET (accessible))))
+ idx = 1;
else
idx = get_index_in_parent (GTK_WIDGET (accessible));
GVariant *res = NULL;
GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
- GtkWidget *widget = GTK_WIDGET (accessible);
if (g_strcmp0 (property_name, "Name") == 0)
- res = g_variant_new_string (gtk_widget_get_name (widget));
+ {
+ if (GTK_IS_WIDGET (accessible))
+ res = g_variant_new_string (gtk_widget_get_name (GTK_WIDGET (accessible)));
+ else if (GTK_IS_STACK_PAGE (accessible))
+ res = g_variant_new_string (gtk_stack_page_get_name (GTK_STACK_PAGE (accessible)));
+ else
+ res = g_variant_new_string ("Name");
+ }
else if (g_strcmp0 (property_name, "Description") == 0)
{
char *label = gtk_at_context_get_label (GTK_AT_CONTEXT (self));
res = g_variant_new_string ("");
else if (g_strcmp0 (property_name, "Parent") == 0)
{
- GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (accessible));
-
- if (parent == NULL)
+ if (GTK_IS_WIDGET (accessible))
{
- res = gtk_at_spi_root_to_ref (self->root);
+ GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (accessible));
+
+ if (parent == NULL)
+ {
+ res = gtk_at_spi_root_to_ref (self->root);
+ }
+ else if (GTK_IS_STACK (parent))
+ {
+ GtkStackPage *page =
+ gtk_stack_get_page (GTK_STACK (parent), GTK_WIDGET (accessible));
+ GtkATContext *parent_context =
+ gtk_accessible_get_at_context (GTK_ACCESSIBLE (page));
+
+ if (parent_context != NULL)
+ res = g_variant_new ("(so)",
+ g_dbus_connection_get_unique_name (self->connection),
+ GTK_AT_SPI_CONTEXT (parent_context)->context_path);
+ }
+ else
+ {
+ GtkATContext *parent_context =
+ gtk_accessible_get_at_context (GTK_ACCESSIBLE (parent));
+
+ if (parent_context != NULL)
+ res = g_variant_new ("(so)",
+ g_dbus_connection_get_unique_name (self->connection),
+ GTK_AT_SPI_CONTEXT (parent_context)->context_path);
+ }
}
- else
+ else if (GTK_IS_STACK_PAGE (accessible))
{
+ GtkWidget *parent = gtk_widget_get_parent (gtk_stack_page_get_child (GTK_STACK_PAGE (accessible)));
GtkATContext *parent_context =
gtk_accessible_get_at_context (GTK_ACCESSIBLE (parent));
else if (g_strcmp0 (property_name, "ChildCount") == 0)
{
int n_children = 0;
- GtkWidget *child;
- for (child = gtk_widget_get_first_child (widget);
- child;
- child = gtk_widget_get_next_sibling (child))
+ if (GTK_IS_WIDGET (accessible))
{
- if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
- continue;
+ GtkWidget *child;
+
+ for (child = gtk_widget_get_first_child (GTK_WIDGET (accessible));
+ child;
+ child = gtk_widget_get_next_sibling (child))
+ {
+ if (!gtk_accessible_should_present (GTK_ACCESSIBLE (child)))
+ continue;
- n_children++;
+ n_children++;
+ }
+ }
+ else if (GTK_IS_STACK_PAGE (accessible))
+ {
+ n_children = 1;
}
res = g_variant_new_int32 (n_children);
static void
gtk_at_spi_context_register_object (GtkAtSpiContext *self)
{
- GtkWidget *widget = GTK_WIDGET (gtk_at_context_get_accessible (GTK_AT_CONTEXT (self)));
+ GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
GVariantBuilder interfaces = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_STRING_ARRAY);
const GDBusInterfaceVTable *vtable;
NULL);
self->n_registered_objects++;
- vtable = gtk_atspi_get_text_vtable (widget);
+ vtable = gtk_atspi_get_text_vtable (accessible);
if (vtable)
{
g_variant_builder_add (&interfaces, "s", atspi_text_interface.name);
self->n_registered_objects++;
}
- vtable = gtk_atspi_get_editable_text_vtable (widget);
+ vtable = gtk_atspi_get_editable_text_vtable (accessible);
if (vtable)
{
g_variant_builder_add (&interfaces, "s", atspi_editable_text_interface.name);
NULL);
self->n_registered_objects++;
}
- vtable = gtk_atspi_get_value_vtable (widget);
+ vtable = gtk_atspi_get_value_vtable (accessible);
if (vtable)
{
g_variant_builder_add (&interfaces, "s", atspi_value_interface.name);
self->n_registered_objects++;
}
- vtable = gtk_atspi_get_selection_vtable (widget);
+ vtable = gtk_atspi_get_selection_vtable (accessible);
if (vtable)
{
g_variant_builder_add (&interfaces, "s", atspi_selection_interface.name);
GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
gtk_at_spi_context_unregister_object (self);
- gtk_atspi_disconnect_text_signals (GTK_WIDGET (accessible));
- gtk_atspi_disconnect_selection_signals (GTK_WIDGET (accessible));
+ gtk_atspi_disconnect_text_signals (accessible);
+ gtk_atspi_disconnect_selection_signals (accessible);
G_OBJECT_CLASS (gtk_at_spi_context_parent_class)->dispose (gobject);
}
g_free (uuid);
GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
- gtk_atspi_connect_text_signals (GTK_WIDGET (accessible),
+ gtk_atspi_connect_text_signals (accessible,
(GtkAtspiTextChangedCallback *)emit_text_changed,
(GtkAtspiTextSelectionCallback *)emit_text_selection_changed,
self);
- gtk_atspi_connect_selection_signals (GTK_WIDGET (accessible),
+ gtk_atspi_connect_selection_signals (accessible,
(GtkAtspiSelectionCallback *)emit_selection_changed,
self);
gtk_at_spi_context_register_object (self);
const GDBusInterfaceVTable *
-gtk_atspi_get_editable_text_vtable (GtkWidget *widget)
+gtk_atspi_get_editable_text_vtable (GtkAccessible *accessible)
{
- if (GTK_IS_ENTRY (widget) ||
- GTK_IS_SEARCH_ENTRY (widget) ||
- GTK_IS_PASSWORD_ENTRY (widget) ||
- GTK_IS_SPIN_BUTTON (widget))
+ if (GTK_IS_ENTRY (accessible) ||
+ GTK_IS_SEARCH_ENTRY (accessible) ||
+ GTK_IS_PASSWORD_ENTRY (accessible) ||
+ GTK_IS_SPIN_BUTTON (accessible))
return &entry_vtable;
- else if (GTK_IS_TEXT_VIEW (widget))
+ else if (GTK_IS_TEXT_VIEW (accessible))
return &text_view_vtable;
return NULL;
#pragma once
#include <gio/gio.h>
-#include "gtkwidget.h"
+#include "gtkaccessible.h"
G_BEGIN_DECLS
-const GDBusInterfaceVTable *gtk_atspi_get_editable_text_vtable (GtkWidget *widget);
+const GDBusInterfaceVTable *gtk_atspi_get_editable_text_vtable (GtkAccessible *accessible);
G_END_DECLS
};
const GDBusInterfaceVTable *
-gtk_atspi_get_selection_vtable (GtkWidget *widget)
+gtk_atspi_get_selection_vtable (GtkAccessible *accessible)
{
- if (GTK_IS_LIST_BOX (widget))
+ if (GTK_IS_LIST_BOX (accessible))
return &listbox_vtable;
- else if (GTK_IS_FLOW_BOX (widget))
+ else if (GTK_IS_FLOW_BOX (accessible))
return &flowbox_vtable;
- else if (GTK_IS_COMBO_BOX (widget))
+ else if (GTK_IS_COMBO_BOX (accessible))
return &combobox_vtable;
return NULL;
} SelectionChanged;
void
-gtk_atspi_connect_selection_signals (GtkWidget *widget,
+gtk_atspi_connect_selection_signals (GtkAccessible *accessible,
GtkAtspiSelectionCallback selection_changed,
gpointer data)
{
- if (GTK_IS_LIST_BOX (widget))
+ if (GTK_IS_LIST_BOX (accessible))
{
SelectionChanged *changed;
changed->changed = selection_changed;
changed->data = data;
- g_object_set_data_full (G_OBJECT (widget), "accessible-selection-data", changed, g_free);
+ g_object_set_data_full (G_OBJECT (accessible), "accessible-selection-data", changed, g_free);
- g_signal_connect_swapped (widget, "selected-rows-changed", G_CALLBACK (selection_changed), data);
+ g_signal_connect_swapped (accessible, "selected-rows-changed", G_CALLBACK (selection_changed), data);
}
- else if (GTK_IS_FLOW_BOX (widget))
+ else if (GTK_IS_FLOW_BOX (accessible))
{
SelectionChanged *changed;
changed->changed = selection_changed;
changed->data = data;
- g_object_set_data_full (G_OBJECT (widget), "accessible-selection-data", changed, g_free);
+ g_object_set_data_full (G_OBJECT (accessible), "accessible-selection-data", changed, g_free);
- g_signal_connect_swapped (widget, "selected-children-changed", G_CALLBACK (selection_changed), data);
+ g_signal_connect_swapped (accessible, "selected-children-changed", G_CALLBACK (selection_changed), data);
}
- else if (GTK_IS_COMBO_BOX (widget))
+ else if (GTK_IS_COMBO_BOX (accessible))
{
SelectionChanged *changed;
changed->changed = selection_changed;
changed->data = data;
- g_object_set_data_full (G_OBJECT (widget), "accessible-selection-data", changed, g_free);
+ g_object_set_data_full (G_OBJECT (accessible), "accessible-selection-data", changed, g_free);
- g_signal_connect_swapped (widget, "changed", G_CALLBACK (selection_changed), data);
+ g_signal_connect_swapped (accessible, "changed", G_CALLBACK (selection_changed), data);
}
}
void
-gtk_atspi_disconnect_selection_signals (GtkWidget *widget)
+gtk_atspi_disconnect_selection_signals (GtkAccessible *accessible)
{
- if (GTK_IS_LIST_BOX (widget) ||
- GTK_IS_FLOW_BOX (widget) ||
- GTK_IS_COMBO_BOX (widget))
+ if (GTK_IS_LIST_BOX (accessible) ||
+ GTK_IS_FLOW_BOX (accessible) ||
+ GTK_IS_COMBO_BOX (accessible))
{
SelectionChanged *changed;
- changed = g_object_get_data (G_OBJECT (widget), "accessible-selection-data");
+ changed = g_object_get_data (G_OBJECT (accessible), "accessible-selection-data");
- g_signal_handlers_disconnect_by_func (widget, changed->changed, changed->data);
+ g_signal_handlers_disconnect_by_func (accessible, changed->changed, changed->data);
- g_object_set_data (G_OBJECT (widget), "accessible-selection-data", NULL);
+ g_object_set_data (G_OBJECT (accessible), "accessible-selection-data", NULL);
}
}
#pragma once
#include <gio/gio.h>
-#include "gtkwidget.h"
+#include "gtkaccessible.h"
G_BEGIN_DECLS
-const GDBusInterfaceVTable *gtk_atspi_get_selection_vtable (GtkWidget *widget);
+const GDBusInterfaceVTable *gtk_atspi_get_selection_vtable (GtkAccessible *accessible);
typedef void (GtkAtspiSelectionCallback) (gpointer data);
-void gtk_atspi_connect_selection_signals (GtkWidget *widget,
+void gtk_atspi_connect_selection_signals (GtkAccessible *accessible,
GtkAtspiSelectionCallback selection_changed,
gpointer data);
-void gtk_atspi_disconnect_selection_signals (GtkWidget *widget);
+void gtk_atspi_disconnect_selection_signals (GtkAccessible *accessible);
G_END_DECLS
};
const GDBusInterfaceVTable *
-gtk_atspi_get_text_vtable (GtkWidget *widget)
+gtk_atspi_get_text_vtable (GtkAccessible *accessible)
{
- if (GTK_IS_LABEL (widget))
+ if (GTK_IS_LABEL (accessible))
return &label_vtable;
- else if (GTK_IS_ENTRY (widget) ||
- GTK_IS_SEARCH_ENTRY (widget) ||
- GTK_IS_PASSWORD_ENTRY (widget) ||
- GTK_IS_SPIN_BUTTON (widget))
+ else if (GTK_IS_ENTRY (accessible) ||
+ GTK_IS_SEARCH_ENTRY (accessible) ||
+ GTK_IS_PASSWORD_ENTRY (accessible) ||
+ GTK_IS_SPIN_BUTTON (accessible))
return &entry_vtable;
- else if (GTK_IS_TEXT_VIEW (widget))
+ else if (GTK_IS_TEXT_VIEW (accessible))
return &text_view_vtable;
return NULL;
}
void
-gtk_atspi_connect_text_signals (GtkWidget *widget,
+gtk_atspi_connect_text_signals (GtkAccessible *accessible,
GtkAtspiTextChangedCallback text_changed,
GtkAtspiTextSelectionCallback selection_changed,
gpointer data)
{
TextChanged *changed;
- if (!GTK_IS_EDITABLE (widget) &&
- !GTK_IS_TEXT_VIEW (widget))
+ if (!GTK_IS_EDITABLE (accessible) &&
+ !GTK_IS_TEXT_VIEW (accessible))
return;
changed = g_new0 (TextChanged, 1);
changed->selection_changed = selection_changed;
changed->data = data;
- g_object_set_data_full (G_OBJECT (widget), "accessible-text-data", changed, g_free);
+ g_object_set_data_full (G_OBJECT (accessible), "accessible-text-data", changed, g_free);
- if (GTK_IS_EDITABLE (widget))
+ if (GTK_IS_EDITABLE (accessible))
{
- GtkText *text = gtk_editable_get_text_widget (widget);
+ GtkText *text = gtk_editable_get_text_widget (GTK_WIDGET (accessible));
if (text)
{
gtk_editable_get_selection_bounds (GTK_EDITABLE (text), &changed->cursor_position, &changed->selection_bound);
}
}
- else if (GTK_IS_TEXT_VIEW (widget))
+ else if (GTK_IS_TEXT_VIEW (accessible))
{
- g_signal_connect (widget, "notify::buffer", G_CALLBACK (buffer_changed), changed);
- buffer_changed (widget, NULL, changed);
+ g_signal_connect (accessible, "notify::buffer", G_CALLBACK (buffer_changed), changed);
+ buffer_changed (GTK_WIDGET (accessible), NULL, changed);
}
}
void
-gtk_atspi_disconnect_text_signals (GtkWidget *widget)
+gtk_atspi_disconnect_text_signals (GtkAccessible *accessible)
{
TextChanged *changed;
- changed = g_object_get_data (G_OBJECT (widget), "accessible-text-data");
+ changed = g_object_get_data (G_OBJECT (accessible), "accessible-text-data");
- if (GTK_IS_EDITABLE (widget))
+ if (GTK_IS_EDITABLE (accessible))
{
- GtkText *text = gtk_editable_get_text_widget (widget);
+ GtkText *text = gtk_editable_get_text_widget (GTK_WIDGET (accessible));
if (text)
{
g_signal_handlers_disconnect_by_func (text, notify_cb, changed);
}
}
- else if (GTK_IS_TEXT_VIEW (widget))
+ else if (GTK_IS_TEXT_VIEW (accessible))
{
- g_signal_handlers_disconnect_by_func (widget, buffer_changed, changed);
+ g_signal_handlers_disconnect_by_func (accessible, buffer_changed, changed);
if (changed->buffer)
{
g_signal_handlers_disconnect_by_func (changed->buffer, insert_range_cb, changed);
g_clear_object (&changed->buffer);
}
- g_object_set_data (G_OBJECT (widget), "accessible-text-data", NULL);
+ g_object_set_data (G_OBJECT (accessible), "accessible-text-data", NULL);
}
#pragma once
#include <gio/gio.h>
-#include "gtkwidget.h"
+#include "gtkaccessible.h"
G_BEGIN_DECLS
-const GDBusInterfaceVTable *gtk_atspi_get_text_vtable (GtkWidget *widget);
+const GDBusInterfaceVTable *gtk_atspi_get_text_vtable (GtkAccessible *accessible);
typedef void (GtkAtspiTextChangedCallback) (gpointer data,
const char *kind,
const char *kind,
int position);
-void gtk_atspi_connect_text_signals (GtkWidget *widget,
+void gtk_atspi_connect_text_signals (GtkAccessible *accessible,
GtkAtspiTextChangedCallback text_changed,
GtkAtspiTextSelectionCallback selection_changed,
gpointer data);
-void gtk_atspi_disconnect_text_signals (GtkWidget *widget);
+void gtk_atspi_disconnect_text_signals (GtkAccessible *accessible);
G_END_DECLS
return ATSPI_ROLE_CHECK_BOX;
case GTK_ACCESSIBLE_ROLE_TAB:
- return ATSPI_ROLE_FILLER;
+ return ATSPI_ROLE_PAGE_TAB;
case GTK_ACCESSIBLE_ROLE_TABLE:
return ATSPI_ROLE_TABLE;
case GTK_ACCESSIBLE_ROLE_TAB_LIST:
- return ATSPI_ROLE_FILLER;
+ return ATSPI_ROLE_PAGE_TAB_LIST;
case GTK_ACCESSIBLE_ROLE_TAB_PANEL:
- return ATSPI_ROLE_FILLER;
+ return ATSPI_ROLE_PANEL;
case GTK_ACCESSIBLE_ROLE_TEXT_BOX:
return ATSPI_ROLE_TEXT;
};
const GDBusInterfaceVTable *
-gtk_atspi_get_value_vtable (GtkWidget *widget)
+gtk_atspi_get_value_vtable (GtkAccessible *accessible)
{
- if (GTK_IS_LEVEL_BAR (widget) ||
- GTK_IS_PANED (widget) ||
- GTK_IS_PROGRESS_BAR (widget) ||
- GTK_IS_RANGE (widget) ||
- GTK_IS_SCALE_BUTTON (widget) ||
- GTK_IS_SPIN_BUTTON (widget))
+ if (GTK_IS_LEVEL_BAR (accessible) ||
+ GTK_IS_PANED (accessible) ||
+ GTK_IS_PROGRESS_BAR (accessible) ||
+ GTK_IS_RANGE (accessible) ||
+ GTK_IS_SCALE_BUTTON (accessible) ||
+ GTK_IS_SPIN_BUTTON (accessible))
return &value_vtable;
return NULL;
#pragma once
#include <gio/gio.h>
-#include "gtkwidget.h"
+#include "gtkaccessible.h"
G_BEGIN_DECLS
-const GDBusInterfaceVTable *gtk_atspi_get_value_vtable (GtkWidget *widget);
+const GDBusInterfaceVTable *gtk_atspi_get_value_vtable (GtkAccessible *accessible);
G_END_DECLS
#include <gtk/gtk.h>
#include "gtkstack.h"
+#include "gtkenums.h"
+#include "gtkaccessibleprivate.h"
+#include "gtkatcontextprivate.h"
#include "gtkprivate.h"
#include "gtkintl.h"
#include "gtkprogresstrackerprivate.h"
CHILD_PROP_NEEDS_ATTENTION,
CHILD_PROP_VISIBLE,
CHILD_PROP_USE_UNDERLINE,
- LAST_CHILD_PROP
+ LAST_CHILD_PROP,
+
+ PROP_ACCESSIBLE_ROLE
};
struct _GtkStackPage
char *title;
char *icon_name;
GtkWidget *last_focus;
+
+ GtkATContext *at_context;
+
guint needs_attention : 1;
guint visible : 1;
guint use_underline : 1;
static GParamSpec *stack_props[LAST_PROP] = { NULL, };
static GParamSpec *stack_page_props[LAST_CHILD_PROP] = { NULL, };
-G_DEFINE_TYPE (GtkStackPage, gtk_stack_page, G_TYPE_OBJECT)
+static GtkATContext *
+gtk_stack_page_accessible_get_at_context (GtkAccessible *accessible)
+{
+ GtkStackPage *page = GTK_STACK_PAGE (accessible);
+
+ if (page->at_context == NULL)
+ {
+ GtkAccessibleRole role = GTK_ACCESSIBLE_ROLE_TAB_PANEL;
+ GdkDisplay *display = gtk_widget_get_display (page->widget);
+
+ page->at_context = gtk_at_context_create (role, accessible, display);
+ }
+
+ return page->at_context;
+}
+
+static gboolean
+gtk_stack_page_accessible_get_platform_state (GtkAccessible *self,
+ GtkAccessiblePlatformState state)
+{
+ return FALSE;
+}
+
+static void
+gtk_stack_page_accessible_init (GtkAccessibleInterface *iface)
+{
+ iface->get_at_context = gtk_stack_page_accessible_get_at_context;
+ iface->get_platform_state = gtk_stack_page_accessible_get_platform_state;
+}
+
+G_DEFINE_TYPE_WITH_CODE (GtkStackPage, gtk_stack_page, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE,
+ gtk_stack_page_accessible_init))
static void
gtk_stack_page_init (GtkStackPage *page)
g_value_set_boolean (value, gtk_stack_page_get_use_underline (info));
break;
+ case PROP_ACCESSIBLE_ROLE:
+ g_value_set_enum (value, GTK_ACCESSIBLE_ROLE_TAB_PANEL);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
gtk_stack_page_set_use_underline (info, g_value_get_boolean (value));
break;
+ case PROP_ACCESSIBLE_ROLE:
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
g_object_class_install_properties (object_class, LAST_CHILD_PROP, stack_page_props);
+
+ g_object_class_override_property (object_class, PROP_ACCESSIBLE_ROLE, "accessible-role");
}
#define GTK_TYPE_STACK_PAGES (gtk_stack_pages_get_type ())